iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Security

一起資安入門 -- picoCTF 探索與解題系列 第 7

[2021鐵人賽 Day07] General Skills 04

  • 分享至 

  • xImage
  •  
  • 引言
    昨天學了 chmod 命令的用法,這邊大概整理幾個簡單用法:

    $ chmod 參數 目標檔案
    
    參數 簡介
    +x 增加目前使用者對目標檔案執行權限
    +r 增加目前使用者對目標檔案讀取權限
    +w 增加目前使用者對目標檔案寫入權限
    -x 移除目前使用者對目標檔案執行權限
    -r 移除目前使用者對目標檔案讀取權限
    -w 移除目前使用者對目標檔案寫入權限
    • 範例
      情境:
      我在目前目錄創建檔案 pie

      pie
      

      然後嘗試 cat 它,可以正常讀取。

      如果我想要移除它被讀取的權限,

      $ chmod -r ./pie
      

      然後再嘗試讀取,

      $ cat pie
      cat: pie: Permission denied
      

      果然無法讀取。

      其實這個命令還有許多關於使用者種類、群組等等的細節,
      可以限定某些使用者可以但其他人不行的設定,
      但這邊就暫不贅述。

  • General Skills / Nice netcat...
    https://ithelp.ithome.com.tw/upload/images/20210922/201114291o3VyegLuI.png
    這題要引入一個新的、超好用的工具: nc (netcat)

    這個工具可以讓你直接連接一個遠方主機,它向你送訊息、你也向它送訊息,這樣一個溝通工具,
    仔細講它就是用來針對 TCPUDP 兩種協定的傳輸,
    反正白話講就是類似跟遠端電腦聊天、你一句我一句的感覺。

    這個工具在 Linux 各種工具中常常在「最好用工具」榜單裡名列前茅,相當實用~
    今天這題就要來第一次使用它看看。

    題目要求先使用 nc 工具連上一個伺服器上的程式:

    $ nc mercury.picoctf.net 7449
    

    並且題目說該程式不會說英文,這是什麼意思?
    我們先連上去就知道了:

    112 
    105 
    99 
    111 
    67 
    84 
    70 
    123 
    103 
    48 
    48 
    100 
    95 
    107 
    49 
    116 
    116 
    121 
    33 
    95 
    110 
    49 
    99 
    51 
    95 
    107 
    49 
    116 
    116 
    121 
    33 
    95 
    102 
    50 
    100 
    55 
    99 
    97 
    102 
    97 
    125 
    10
    

    結果程式跑出一堆數字,如果稍微寫過程式可能就會有點感覺,
    這些數字八成是 ASCII code
    每個字元都會對應一個數字,
    如:

    'a' 字元的 ASCII code 是 97
    'A' 字元的 ASCII code 是 65
    

    程式實際上是以這些數字來處理字元的。

    所以這些數字實際上是字元的 ASCII code ,
    我們可以寫一個 Python 程式將它們轉為字母:

    # nice_nc.py
    hile True:
    try:
        n = int(input())
        print(chr(n), end='')  # chr 會將 ASCII code 轉成字元
    except:
        print()
        break
    ``
    
    我們連上該伺服器後,利用 linux 的[管線](https://zh.wikipedia.org/wiki/%E7%AE%A1%E9%81%93_(Unix)) (pipe) ,
    將 nc 的輸出當作 python 程式的輸入,直接轉換成字母並印出來,
    flag 就出現了:
    ```shell
    $ nc mercury.picoctf.net 7449 | python nice_nc.py
    picoCTF{g00d_k1tty!_n1c3_k1tty!_f2d7cafa}
    

    注意程式印出 flag 後不會結束,會等待輸入,
    此時只要 Ctrl+D (代表 EOF ,意為檔案的結尾 End of File) 結束即可。


上一篇
[2021鐵人賽 Day06] General Skills 03
下一篇
[2021鐵人賽 Day08] General Skills 05
系列文
一起資安入門 -- picoCTF 探索與解題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
nataliepjlin
iT邦新手 5 級 ‧ 2023-03-31 22:27:18

已解決: 先按esc後,:wq(write and quit)存檔離開
想請問Python部分是用vim然後按i插入進去嗎? 我是這樣用但按esc無法escape,最後只能用線上轉換ascii。

我要留言

立即登入留言